The present invention relates generally to computer buses for transmitting data and, more particularly to preserving signal integrity on a SCSI bus by terminating the SCSI buses such that maximum stub length requirements are met.
A "bus" in a digital computer system is generally a set of parallel conductors for interconnecting major components of a digital computer system. The bus essentially transfers electrical signals from one component connected to the bus to another component connected to the bus. Buses of various types are present in virtually every digital computer system. One particular bus, called the Small Computer System Interface (SCSI) bus, is used widely for coupling a digital computer system to various peripheral devices such as disk drives, Redundant Arrays of Independent Disks (RAID) devices, Digital Audio Tape (DAT) drives, Compact Disk Read Only Memory (CD-ROM) drives, optical storage drives, printers, and scanners.
The SCSI bus is a local Input/Output ("I/O") bus that can be operated over a wide range of data rates. The primary object of the SCSI bus interface is to provide host computers with device independence within a class of devices. Accordingly, different disk drives, tape drives, printer, optical media drives, and other peripheral devices can be added to a host computer without requiring modifications to generic system hardware or software. Standards have been defined by the American National Standards Institute (ANSI) for different types of SCSI busses. In particular, the ANSI document, SCSI Parallel Interface-2, describes in detail the SCSI-2 standard, the disclosure of which is hereby incorporated by reference.
A requirement of the various SCSI standards is that each end of the SCSI bus be terminated to preserve signal integrity. This requirement is met by coupling a terminating circuit to each end of the SCSI bus in order to reduce signal reflections that would otherwise occur at the ends of the SCSI bus. One problem with terminating the SCSI bus arises in SCSI controllers having at least two bus ports for coupling SCSI devices to a single SCSI bus. If SCSI devices are coupled to two bus ports of the SCSI controller, then the SCSI controller resides in the middle of the SCSI bus. As a result, the SCSI bus is terminated at or near the last SCSI device coupled to each bus port. However, if SCSI devices are coupled to only one bus port of the SCSI controller, then the SCSI controller resides at one end of the SCSI bus. Accordingly, the SCSI bus is terminated at or near (i) the SCSI controller, and (ii) the last SCSI device that is coupled to the one bus port.
Due to the fact that termination of the SCSI bus at or near the SCSI controller is dependant upon whether SCSI devices are coupled to the bus ports of the SCSI controller, most modern SCSI controllers include a switchable terminating circuit for terminating the SCSI bus. The switchable terminating circuit terminates the SCSI bus in response to a control signal. The control signal may be generated in response to a mechanical switch being actuated, a control register being set, or a jumper being configured. Alternatively, newer SCSI controllers include a termination control circuit which (i) receives signals indicating whether SCSI devices are coupled to bus ports of the SCSI controller, and (ii) generates a control signal that causes the switchable terminating circuit to terminate the SCSI bus if the received signals indicate that the SCSI controller resides in the middle of the SCSI bus.
Another requirement of the various SCSI standards is that each stub coupled to the SCSI bus be no greater than a defined maximum stub length. The SCSI standards define a stub as any electrical path that is not part of the SCSI bus path. Moreover, the SCSI standards define the SCSI bus path as the electrical path between the terminating circuits that terminate the ends of the SCSI bus. Due to physical distances between the bus ports and other devices of the SCSI controller, maintaining proper stub lengths using conventional SCSI controller designs is highly difficult if not impossible. This is especially true for SCSI controllers which control multiple SCSI buses and use low differential voltage signal with a high signal edge slew rate.
Due to the nature of single ended signaling and lower transfer rates defined by early SCSI standards, strict adherence to the maximum stub length requirement was not crucial to preserving signal integrity across the SCSI bus. However, due to the nature of low differential signaling, higher transfer rates, and higher signal edge slew rates defined by newer SCSI standards, strict adherence to the maximum stub length requirement has become crucial to preserving data signal integrity across the SCSI bus. Accordingly, SCSI controller designs that were functional under early SCSI standards have become unworkable under the latest SCSI standards which have not only shortened the maximum stub length requirement but in practice actually require that the maximum stub length requirement be met.
What is needed, therefore, is a method and apparatus for preserving signal integrity on a SCSI bus by terminating a SCSI bus such that maximum stub length requirements are met.